package com.itheima.huikebackend.mapper;

import com.github.pagehelper.Page;
import com.itheima.huikebackend.dto.DictListDTO;
import com.itheima.huikebackend.entity.SysDictType;
import com.itheima.huikebackend.vo.SysDictDataVO;
import com.itheima.huikebackend.vo.SysDictListVO;
import com.itheima.huikebackend.vo.SysDictTypeExcelVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface DictionaryMapper {
    /**
     * 选择列表
     *
     * @param sysDictType sys dict类型
     * @return {@link Page}<{@link SysDictType}>
     */
    Page<SysDictListVO> selectList(SysDictType sysDictType);

    /**
     * 选择类型
     *
     * @param type 类型
     * @return {@link List}<{@link SysDictDataVO}>
     */
    List<SysDictDataVO> selectType(String type);

    /**
     * 选择dict类型id
     *
     * @param dictId dict id
     * @return {@link SysDictListVO}
     */
    SysDictListVO selectDictTypeById(Long dictId);

    /**
     * 选择类型列表
     *
     * @param sysDictType sys dict类型
     * @return {@link Page}<{@link SysDictDataVO}>
     */
    Page<SysDictDataVO> selectTypeList(SysDictType sysDictType);

    /**
     * 选择页面
     *
     * @param dictListDTO dict dto列表
     * @return {@link Page}<{@link SysDictType}>
     */
    Page<SysDictType> selectPage(DictListDTO dictListDTO);

    /**
     * 插入
     *
     * @param sysDictType sys dict类型
     */
    void insert(SysDictType sysDictType);


    /**
     * 删除通过dic id
     *
     * @param ids dict id
     */
    void deleteByDicId(List<Long> ids);

    /**
     * 更新通过dict id
     *
     * @param sysDictType sys dict类型
     */
    void updateByDictId(SysDictType sysDictType);

    /**
     * 选择所有
     *
     * @return {@link List}<{@link SysDictType}>
     */
    List<SysDictTypeExcelVO> selectAll();
}
